package com.bigdata.spark.core.rdd.operator.transform

import org.apache.spark.rdd.RDD
import org.apache.spark.sql.catalyst.dsl.expressions.intToLiteral
import org.apache.spark.{SPARK_VERSION_SHORT, SparkConf, SparkContext}

/**
 * @author : ranzlupup
 * @date : 2023/3/1 16:14
 */
object RDD_Transform_filter {
    def main(args: Array[String]): Unit = {
        val sparkConf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("RDD")
        val sparkContext: SparkContext = new SparkContext(sparkConf)
        // val RDD: RDD[Int] = sparkContext.makeRDD(List(1, 2, 3, 4, 5, 6, 7, 8))
        // val RDD2: RDD[Int] = sparkContext.makeRDD(List(1, 2, 3, 4, 5, 6, 7, 8), 2)
        //
        // // TODO RDD转换算子
        // //      Value类型
        // //      filter
        // // 将数据根据指定的规则进行筛选过滤，符合规则的数据保留，不符合规则的数据丢弃。
        // // 当数据进行筛选过滤后，分区不变，但是分区内的数据可能不均衡，生产环境下，可能会出现 数据倾斜。
        //
        // RDD.filter(_ % 2 == 0).collect().foreach(println)
        val fruits = List(("apple", 2), ("banana", 5), ("litchi", 4), ("apple", 12), ("banana", 14), ("litchi", 2))
        val res0 = sparkContext.parallelize(fruits, 2).aggregateByKey(3)(math.max(_, _), _ + _).collect()
        val res1 = sparkContext.parallelize(fruits, 1).aggregateByKey(3)(math.max(_, _), _ + _).collect().foreach(println)
        sparkContext.stop()
    }
}
